#include "projectlistwidget.h"
#include <QMimeData>
ProjectListWidget::ProjectListWidget(QWidget *parent) :
    QListWidget(parent)
    {
    setAcceptDrops(true);
    }
void ProjectListWidget::mousePressEvent(QMouseEvent *event)
    {
    if (event->button() == Qt::LeftButton)
    startPos = event->pos();
    QListWidget::mousePressEvent(event);
    }
//////////////////////////////////////////////////////////////////////////////////////////
void ProjectListWidget::mouseMoveEvent(QMouseEvent *event)
    {
    if (event->buttons() & Qt::LeftButton)
    {
    int distance = (event->pos() - startPos).manhattanLength();
    if (distance >= QApplication::startDragDistance())
    performDrag();
    }
    QListWidget::mouseMoveEvent(event);
    }
//////////////////////////////////////////////////////////////////////////////////////////
void ProjectListWidget::performDrag()
    {
    QListWidgetItem *item = currentItem();
    if (item)
    {
    QMimeData *mimeData = new QMimeData;
    mimeData->setText(item->text());
    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setPixmap(QPixmap(":/images/person.png"));
    if (drag->start(Qt::MoveAction) == Qt::MoveAction)
    delete item;
    }
    }
//////////////////////////////////////////////////////////////////////////////////////////
void ProjectListWidget::dragEnterEvent(QDragEnterEvent *event)
    {
    ProjectListWidget *source = qobject_cast<ProjectListWidget *>(event->source());
    if (source && source != this)
    {

    event->setDropAction(Qt::MoveAction);
    event->accept();}
    }
//////////////////////////////////////////////////////////////////////////////////////////
void ProjectListWidget::dragMoveEvent(QDragMoveEvent *event)
    {
    ProjectListWidget *source = qobject_cast<ProjectListWidget *>(event->source());
    if (source && source != this)
    {
    event->setDropAction(Qt::MoveAction);
    event->accept();
    }
    }
//////////////////////////////////////////////////////////////////////////////////////////
void ProjectListWidget::dropEvent(QDropEvent *event)
    {
    ProjectListWidget *source = qobject_cast<ProjectListWidget *>(event->source());
    if (source && source != this)
    {

    addItem(event->mimeData()->text());
    event->setDropAction(Qt::MoveAction);
event->accept();
    }
    }
